
// 连字符和取反字符
; (function () {
    return
    // ^是为取反
    // - 连字符表示一个范围
    // 常见的
    // a-z 1-9

    var string = "a0b a1b a2b a3b a4b a123b";
    // 表示
    // 第一个字母是a
    // 中间可以是1到9的数字
    // 最后一个字母是c
    var regex = /a[1-9]b/g;
    console.log(string.match(regex));
    // ==>[ 'a1b', 'a2b', 'a3b', 'a4b' ]


    // 这里增加了^是为取反
    // 中间不能出现1-9之间的数
    var regex2 = /a[^1-9]b/g;
    console.log(string.match(regex2));
    // ==>[ 'a0b' ]


})();

// 简写形式
; (function () {
    //return
    //     \d 表 记示 忆方式：其[0 - 9]。表 英示 文是 是一digit 位数字 （数字） 。 。

    //     \D 表示[^ 0 - 9]。表示除数字外的任意字符。

    //     \w 表 记示 忆方式：[0 - 9a - zA - Z_] w 是 word 。表的示数字、 简写，也大小写 称单词字字符 母和下 。 划线。

    //     \W 表示[^ 0 - 9a - zA - Z_]。非单词字符。

    //     \s
    //     表示[\t\v\n\r\f]。表示空白符，包括空格、水平制表符、垂直制表符、换行符、回车符、换页符。
    //     记忆方式：s 是 space 的首字母，空白符的单词是 white space。

    //     \S 表示[^ \t\v\n\r\f]。 非空白符。

    //     . 表示[^\n\r\u2028\u2029]。通配符，表示几乎任意字符。换行符、回车符、行分隔符和段分隔符
    //     除外。
    //     记忆方式：想想省略号 … 中的每个点，都可以理解成占位符，表示任何类似的东西
})();

// 量词(决定出现几次的功能)
; (function () {
    //return
    //     { m,} 表示至少出现 m 次。
    //     { m } 等价于 { m, m }，表示出现 m 次。

    //     ? 等价于 { 0, 1 }，表示出现或者不出现。
    //     记忆方式：问号的意思表示，有吗？

    //     + 等价于 { 1,}，表示出现至少一次。
    //     记忆方式：加号是追加的意思，得先有一个，然后才考虑追加。

    //     * 等价于 { 0,}，表示出现任意次，有可能不出现。
    //     记忆方式：看看天上的星星，可能一颗没有，可能零散有几颗，可能数也数不过来

    var string = "a0b a12b a2b a3b a4b a123b";
    // 表示
    // 第一个字母是a
    // 中间可以是1到9的数字(共出现3次)
    // 最后一个字母是c
    var regex = /a[1-9]{3}b/g;
    console.log(string.match(regex));
    // ==>[ 'a123b' ]

     // 中间可以是1到9的数字(出现1-3次)
    var regex = /a[1-9]{1,3}b/g;
    console.log(string.match(regex));
    // ==>[ 'a1b', 'a12b', 'a3b', 'a4b', 'a123b' ]

})();



